// JavaScript Document

	function errorFunc(jqXHR, textStatus, errorThrown)
	{
		alert("Извините, произошла ошибка");
	}

if (!$.browser.webkit && !$.browser.safari) {
	$(document).ready(function(){
		$('.hasPlaceholder').textPlaceholder();
	});
}

function validateFields(descr)
{
	var fields = descr.closest('form').find('.field-validation-error');
	for(var i = 0; i < fields.length; i++)
	//если рядом с каким-то из полей ASP.NET MVC сгенерировал сообщение об ошибке
		if(fields[i].childNodes.length > 0)
			return false;

	var requiredFields = descr.closest('form').find('.requiredField');
	for(var i = 0; i < requiredFields.length; i++)
	//если какое-то из необходимых полей пустое
		if(requiredFields[i].value == "")
			return false;
	return true;
}

function updateElement(id, url)
{
	$.ajax({
		'url':			url,
		'type':	 		'GET',
		'dataType':	    'html',
		'success':		function(id) {return function(data){
                            var container = $("#" + id);
                            container.html(data);
                            container.show();
						};}(id),
		'error':		errorFunc
	});	
}

function submitAndUpdate(handler, containerId, url)
{
//    if(validateFields($(this)) == false)  //по какой-то причине выполнение не идет дальше вызова validateFields хотя в самой функции доходит до возврата true
//		return false;           //TODO пофиксить
	var form = $('form[name='+ handler +'_form]');
	var data = form.serializeArray();
	$.ajax({
		'url':			form.attr('action'),
		'type':	 		'POST',
		'data':	 		data,
		'dataType':	'json',
		'success':		function(handler, containerId, url) {return function(data){
							updateElement(containerId, url);
                            $('.' + handler + '_field').show();
                            $('#' + containerId).hide();
                            $('.' + handler + '_input').hide();
						};}(handler, containerId, url),
		'error':		errorFunc
	});	
}

$(document).ready(function () {

    if ($.browser.msie && $.browser.version < 7) {
        $("#project_participantList tr, h1, #person_textBaloon_container, .photoList_item").live({
            mouseenter: function () {
                $(this).addClass('hover');
            },
            mouseleave: function () {
                $(this).removeClass('hover');
            }
        });
    }

    $('.showLightBox_link').click(function () {
        var box = $(this).attr('rel');
        $('#lightbox_shadow').show();
        var position = $(this).offset();
        var width = $('#lightbox_shadow').outerWidth();
        if ($(this).hasClass('switchLightboxLink') == false) {
            $('.lightbox').hide();
            $('#' + box).show().css({
                'marginLeft': -Math.round(width / 2 - position.left) + 'px',
                'top': Math.round(position.top) + 'px',
                'left': '50%'
            });
            if (width / 2 < -Math.round(width / 2 - position.left) + $('#' + box).outerWidth()) {
                $('#' + box).css({
                    'marginLeft': '',
                    'left': '',
                    'right': '0'
                });
            }
        } else {
            var parent = $(this).parents('.lightbox');
            $('#' + box).css({
                'marginLeft': parent.css('marginLeft'),
                'top': parent.css('top'),
                'left': parent.css('left'),
                'right': parent.css('right')
            }).show();
            parent.hide();
        }

        return true;
    });

    $('#lightbox_shadow').click(function () {
        $('.lightbox').hide();
        $(this).hide();
        return false;
    });

    $('.submitInLightBox').click(function () {
        $('#lightbox_shadow').click();
        return true;
    });


    $('.lightbox_close').click(function () {
        $('#lightbox_shadow').click();
        return false;
    });


    $('.editButton_edit').click(function () {
        var name = $(this).attr('name');
        var handler = name && name != '' && name != null ? name : $(this).attr('rel');

        $('.' + handler + '_field').hide();
        $('.' + handler + '_input').show();
        var i = 0;
        do {
            var from = $('.' + handler + '_field' + i);
            var to = $('.' + handler + '_input' + i);
            to.val($.trim(from.text()));
            i++;
        } while (from.size() && to.size())

        return false;
    });

    $('.editButton_cancel').click(function () {
        var handler = $(this).attr('name') != '' ? $(this).attr('name') : $(this).attr('rel');
        $('.' + handler + '_field').show();
        $('.' + handler + '_input').hide();

        return false;
    });

    $('.submitButton').click(function () {
        if (validateFields($(this)) == false)
            return false;
        return true;
    });

    $('.editButton_submit').click(function () {
        if (validateFields($(this)) == false)
            return false;
        var handler = $(this).attr('name') != '' ? $(this).attr('name') : $(this).attr('rel');
        var form = $('form[name=' + handler + '_form]');
        var data = form.serializeArray();
        data.handler = handler;
        $.ajax({
            'url': form.attr('action'),
            'type': 'POST',
            'data': data,
            //'dataType':	'json',
            'success': function (handler) {
                return function (data) {
                    //var handler = data['handler'];
                    updateFieldsValues(handler);
                };
            } (handler),
            'error': errorFunc
        });

        return false;
    });

    $('.editButton_delete').click(function () {
        if (validateFields($(this)) == false)
            return false;
        var handler = $(this).attr('name') != '' ? $(this).attr('name') : $(this).attr('rel');
        var form = $('form[name=' + handler + '_form]');
        var data = form.serializeArray();
        data.handler = handler;
        $.ajax({
            'url': form.attr('action'),
            'type': 'POST',
            'data': data,
            'success': function (handler) {
                return function (data) {
                    //var handler = data['handler'];
                    removeFields(handler);
                };
            } (handler)
        });

        return false;
    });

    function updateFieldsValues(handler) {
        $('.' + handler + '_field').show();
        $('.' + handler + '_input').hide();

        var i = 0;
        do {
            var to = $('.' + handler + '_field' + i);
            var from = $('.' + handler + '_input' + i);
            var fromContent = $.trim(from.val());
            to.text(fromContent);
            var dummy = $('.' + handler + '_dummy' + i);
            if (dummy.size() > 0) {
                if (fromContent != '') {
                    dummy.hide();
                } else {
                    dummy.show();
                }
            }
            i++;
        } while (from.size() && to.size())
    }

    function removeFields(handler) {
        $('tr.' + handler + '_block td').slideUp(function () {
            $(this).remove();
        });
        $('.' + handler + '_block').slideUp(function () {
            $(this).remove();
        });
    }

    $(document).ajaxStart(function () {
        //		alert('ПОказать крутилку');
        $('input[type=submit]', this).attr('disabled', 'disabled');
    });

    $(document).ajaxStop(function () {
        //		alert('Убрать крутилку');
        $('input[type=submit]', this).removeAttr('disabled');
    });

    $(document).ajaxError(function () {
        //		alert('Ошибка!!');
    });
    $('.ajaxForm_noReload').each(function (index, elem) { elem.success = function () { } });

    $('.ajaxForm, .ajaxForm_noReload').submit(function () {
        var data = $(this).serialize();
        var successFunc = $(this)[0].success || baseSuccess;
        $('#lightbox_shadow').show();
        $.ajax({
            'url': $(this).attr('action'),
            'type': 'POST',
            'dataType': 'json',
            'data': data,
            'success': successFunc,
            'error': errorFunc,
            'beforeSubmit': function () {
                //показываем крутилку
            },
            'complete': function () {

            }
        });

        return false;
    });
});

	function setVacancyEditData(vacancyId, name, description, count, needApproval)
	{
		$("#VacancyId").val(vacancyId);
		$("#VacancyName").val(name);
		
		$("#VacancyDescription").val(description);
		$("#VacancyNeededNumber").val(count);
		var checkbox = $("#VacancyApprovalRequired")[0];
		if(needApproval)
		{
			checkbox.checked = "checked";
		}
	}
    
    function setVacancyRemoveData(vacancyId, name)
	{
		$("#removeBoxVacancyId").val(vacancyId);
		$("#removeBoxVacancyName").text(name);
	}

	function baseSuccess(data) {
		$('#lightbox_shadow').click();
		window.location.reload();
	}

    function removePhoto(actionMethodUrl, photoId, elementId)
    {
        var data = "photoId=" + photoId;
        var successFunc = function () { };
        $.ajax({
            'url': actionMethodUrl,
            'type': 'POST',
            'data': data,
            'success': successFunc,
            'error': function (jqXHR, textStatus, errorThrown) {
                alert(jqXHR + ', ' + textStatus + ', ' + errorThrown);
            },
            'beforeSubmit': function () {
                //показываем крутилку
            },
            'complete': function () {
                //скрыть крутилку
            }
        });

            $('#'+ elementId).siblings().filter(':hidden:first').show();
            $('#'+ elementId).remove();
    }
